/* 
ESM: 整个模块永远是一个对象, 所有暴露的语法都是向这个对象添加属性/方法
暴露方式:
  1. 分别暴露
  2. 默认暴露
  3. 统一暴露
*/

// 1. 分别暴露  => 添加a和b属性
export const a = 123
export function b () {}
// 2. 默认暴露 => 添加default属性
// export default {
//   m: 1
// }
export default function c () {
  
}
// 3. 统一暴露 => 添加 d和e属性
const d = {m: 1}
const e = 345
export {
  d,
  e
}
const f = 4
export {
  f
}

/* 
整个模块对象的结构:
{
  a: 123,
  b () {},
  default (){},
  d: {m: 1},
  e: 345,
  f: 4
}
*/